package main

import (
	"fmt"
	"errors"
)

func fn1(a int, b int) int {
	defer func() {
		err := recover();
		if err!= nil {
			fmt.Println("捕获到异常：", err)
		}
	}()
	return a/b
}

func fn2() {
	defer func() {
		err := recover()
		if err != nil {
			fmt.Println("捕获到异常：", err)
		}
	}()
	panic("抛出一个异常") // 引发异常 结束程序
}

func readFile(filename string) error {
	if filename == "main.go" {
		return nil
	} else {
		return errors.New("文件不存在")
	}
}

// 模拟一个读取文件的方法
func myFn() {
	defer func() {
		err := recover()
		if err!= nil {
			fmt.Println("有异常")
		}
	}()
	err := readFile("xxx.go")
	if err != nil {
		panic(err)
	}
}

func main() {
	fn1(10, 0)
	fn2()
	fmt.Println("结束")

	myFn()
	fmt.Println("结束")
}